package com.itheima.demo07.demo5;

import java.util.Random;


public class PersonB extends Thread {
    private Box box;

    public PersonB(Box box) {
        this.box = box;
    }

    @Override
    public void run() {
        Random r = new Random();
        //因为不知道抽多次能够抽到
        while (true) {
            //因为还要考虑随机抽,创建随机数对象
            int index = box.getList().size();
            int i = r.nextInt(index);
            String s = box.getList().get(i);
            //共享数据,有多个线程,存在线程安全问题  这儿不能使用this,在本类中this指PersonA,在PersonB中指的是PersonB,操作的就不是同一个了
            synchronized (box) {
                if (box.isExit()){
                    break;
                }
                if (!box.isFlag()) {
                    //为false,B抽
                    box.setFlag(true);
                    box.notifyAll();
                    if ("宝马一辆".equals(s)) {
                        System.out.println("恭喜" + getName() + "获得" + s);
                        //已经抽到奖项了,直接结束程序
                        box.setExit(true);
                        break;
                    } else {
                        //没有抽到大奖,打印抽到的奖项
                        System.out.println(getName() + "抽得" + s);
                        //唤醒其他线程进行抽奖
                        box.notifyAll();
                    }
                } else {
                    //不是B先抽,等待,唤醒其他线程
                    try {
                        box.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    box.notifyAll();
                }
            }
        }
    }
}
